サポート資料 50: MBRをリフレッシュする方法
対象製品: 一般

2002/7/18

<説明>

Windowsが提供しているツールでWindowsの標準的なMBR(マスターブートレコード)に書き直す方法です。
(この操作に関して不明な点がある場合には、Windowsのサポート先にお問い合わせください)

*Windows 98/Meの場合には、事前にWindowsの起動ディスクを作成する必要があります。
 起動ディスクの作成方法については、OSの起動ディスク作成方法 をご覧下さい。

MBRをリフレッシュすると、ハードディスクの最初のセクタを標準のブートコードに書き換えます。
(パーティションテーブルの書き換えは、行いません)。
また、パソコン環境によっては、この作業を行うことにより、パーティションが見えなくなることがあります。

特に以下のユーティリティを使用している場合は、ご注意ください。

ドライブオーバーレイソフトウェア (EZ-Drive, Disk Manager, Disk Wizard, 等)
ブートセレクタユーティリティ (BootMagic[無効にする場合を除きます], System Commander, 等)
その他、ブートコードまたはパーティションテーブルを変更するもの (GoBack)
これらのユーティリティはブートコードと共に、ハードディスクの最初のヘッドに特殊なプログラムを書き込みます。
MBR を書き直すとこれらのプログラムがロードできなくなり、場合によってはパーティションにアクセスができなくなる場合もありますが、これらのソフトウェアをアンインストールできるわけではありません。

また、Microsoft のKnowledgeBase にも参考情報があります。
FDISK and the /MBR switch, refer to Article Q69013 on Microsoft's online Knowledge Base.

 

ドライブの認識順
BIOS起動直後OSが起動する直前に、接続されているハードディスク類が認識されます。認識の順序は通常(BIOSでドライブのサーチ順を変更できないかぎり)次のような順番になります。

IDE Pri-Master → Pri-Slave → Sec-Master → Sec-Slave
→ SCSI1 ID1 → ID2 → ID3 … → SCSI2 ID1 → ID2 → ID3 …

SCSI よりも IDEが優先
セカンダリよりもプライマリが優先
スレーブ接続よりもマスター接続が優先
SCSIカードが複数ある場合は、接続されているPCI/ISAスロットの順
同じSCSIポートに接続されているドライブの場合はSCSI ID の順

--------------------------------------------------------------------------------

マスターブートレコードの構造
PC/AT互換機におけるハードディスクには、フロッピーディスクの構造(ブートセクター+データセクタ)に比べて、ディスクの最初の部分にマスターブートレコード(MBR)と呼ばれる、パーティション管理のためのセクタが用意されています。MBRには、各パーティションを起動させるためのプログラムコードが置かれるブートコード領域と、各パーティションの情報が格納されるパーティションテーブルと呼ばれる領域があります。


プログラム領域に置かれるプログラムコードは、一般にブートストラップローダーと呼ばれており、BIOSの起動ルーチンが最初に読み込むハードディスク上のプログラムとなります。ブートストラップローダーの役割は、パーティションテーブルの情報を参照して起動する領域の開始位置にあるブートセクターをメモリに読み込み、そこに書かれているIPL(イニシャルプログラムローダー)と呼ばれるプログラムに制御を移すことです。

パーティションテーブルは4エントリ用意されており、それぞれに起動フラグ・パーティション種別・パーティション位置情報などが格納されています。起動フラグは、そのパーティションから起動可能かどうかを示す1byteの値で、その内容が 0x80 であれば起動可能であり、0x00 であれば起動できないパーティションであることをあらわしています。この起動フラグが 0x80 の状態のことを一般に「アクティブである」と言い、PC/AT互換仕様のブートストラップローダーは1〜4のパーティションテーブルのうち最初のアクティブな領域を起動するようになっています。

パーティション種別 01 FAT12
04 FAT16
05 DOS 拡張
06 FAT16(32M-2G)
07 HPFS/NTFS
0B FAT32
0C FAT32(LBA対応)
0E FAT16(LBA対応)
0F DOS 拡張(LBA対応)
パーティション種別には 1Byte の情報が格納されており、0x00 〜 0xFF までの数値でパーティションの種類を表しています。そのうち MS-Windows OS で使用されるのは主に左表のものです。

パーティション種別の名前が同じものは、パーティションのサイズや位置によって種別が変わるもので、FDISKコマンドなどでは領域確保時に自動的に決定されます。また、Windows以外の各OS用のパーティション種別も用意されていて、それぞれのOSの領域確保時に専用の種別IDが書き込まれます。


MBRはPCの起動直後 BIOS がハードディスクを参照しようとするとき、唯一の情報源になるので、各パーティション中にいくら正しくOSが配置されていても、MBRの情報が間違っている場合はOSを起動することもできません。

ちなみにWindowsやMS-DOSでパーティションを切ったり、新品のハードディスクを使うときに、最初にFDISKコマンドで領域を確保しますが、FDISKで変更を加えているのはMBR領域の部分だけで、実際のパーティションの内容は何も変更されません。

--------------------------------------------------------------------------------

基本領域と拡張領域
パーティション種別には大きく分けて基本領域と拡張領域があります。また、拡張領域の中に作成する特殊な領域として論理領域という領域もあります。

基本領域と拡張領域と論理領域 領域1
基本領域 領域2
基本領域 領域3
基本領域 領域4
拡張領域 論理領域1 論理領域2 論理領域3


基本領域はそれ自身で完結した領域となる基本的なパーティションで、通常OSが起動に必要とするファイルはこの基本領域に置かれている必要があります。基本領域は一台のハードディスクの中に4つまでしか作成できません。もしも基本領域だけでパーティションを作成するならば、パーティション数の最大はハードディスク毎に4つということになります。これはMBRのパーティションテーブルの数による制限です。

拡張領域は、この4つまでというパーティション数の制限を拡張する仕組みとして考え出されたもので、4つのパーティションのうち1つを拡張領域とすることができます。パーティションテーブルのパーティション種別には、その領域が拡張領域であることをあらわす情報が格納されます。拡張領域はそれ自体ただの入れ物に過ぎず、その中に論理領域を作成して初めて1つの領域として使用出来るようになります。

論理領域は拡張領域を入れ物として作成される特殊な領域で、MS-DOSやWindowsでは論理ドライブと表現されているものです。論理領域は先頭セクタに自身の位置情報を持っており、MBRのパーティションテーブル上には論理領域の開始アドレスや終了アドレスの情報がないので、BIOSレベルで直接参照することができないという制限がありますが、理論上は幾つでも(ハードディスクの容量が許すかぎり)無数に作成できるようになっています。

--------------------------------------------------------------------------------

FDISKコマンドの制限
MS-DOSやWindowsのFDISKコマンドには、パーティション作成に幾つかの制限があります。


基本 MS-DOS 領域を作成

現在のハードディスク: 1

領域 状態 種類 ボリュームラベル Mバイト システム 使用
C: 1 A PRI DOS 9774 FAT32 100%


基本 MS-DOS 領域はすでに存在します.

続けるには Esc キーを押してください.


一台のハードディスクに作成できる基本領域の数は1つだけ
アクティブに設定できるのは基本領域だけ(拡張・論理領域は不可)
アクティブ領域は一台目のハードディスクに一箇所だけ
3.の1台目のハードディスクとは、起動時にBIOSがドライブサーチを行なった際に最初に認識されたハードディスクのことです。※ドライブ認識順参照

以上を考え合わせると、FDISKコマンドだけでアクティブ領域を設定したとき、普通はプライマリマスターに接続されたハードディスクの唯一の基本領域が起動ドライブ(C:)として固定されます。MS-DOSやWindows単独でマルチブートの環境が作りにくいのは、多分にこの制限があるためだと言えます。

これらはFDISKコマンド特有の制限であって、Linux の fdisk や 市販のパーティションマネージャ、その他のパーティション設定ツールを使った場合は、これらの制限が無いことがほとんどです。

--------------------------------------------------------------------------------

アクティブと非アクティブ
たとえばFDISKコマンド以外のパーティションツールを使って基本領域を2つ作り、1つめの領域にWindows95、2つめの領域にWindows98、をそれぞれインストールしたとします。

HDD1─┬─ 基本領域1 Windows95
 └─ 基本領域2 Windows98

PC/AT互換仕様のブートストラップローダーの場合、基本領域の中からアクティブな領域を探してその領域を起動しますので、もしも基本領域1がアクティブになっていれば Windows95が、基本領域2がアクティブになっていれば Windows98が起動します。(両方アクティブになっていたり、両方非アクティブの場合はどちらも起動しない)

そうするとパーティション領域2にインストールしたWin98を起動した場合、起動ドライブが、(C:)ドライブではなく(D:)ドライブになってしまいそうですが、実際はそうはなりません。この場合は、領域2が(C:)ドライブになり、領域1は(D:)ドライブになります。

起動ドライブがC:ドライブ 基本領域1
Windows95
D
  基本領域2
Windows98
C
アクティブ


なぜ、こうなるのか? それは次のドライブレターの順序を参照してください。

--------------------------------------------------------------------------------

ドライブレターの順序
ドライブレターとは、MS-DOS(Win9Xも含む)で物理ドライブや論理ドライブに割り当てられるアルファベットの文字のことで、PC/AT互換機の場合、フロッピーディスクドライブがA: ハードディスクやその他のドライブにはC:以降が割り当てられます。このとき、C:以降のドライブレターの割り当てられる順序には一定の規則性があります。

一応は「アクティブ領域→論理領域→非アクティブ」と覚えておけば、間違いないと思いますが、条件によってはかなり複雑になります。実例を見てみましょう。


★例1------基本領域1がアクティブの場合
アクティブな基本領域は最初にドライブレターが割り当てられます。非アクティブな基本領域は論理領域の後になります。

HDD
1 基本領域1
C
アクティブ 基本領域2
F 論理領域1
D 論理領域2
E

★例2------基本領域2がアクティブの場合
2番目以降の領域がアクティブな場合は、その領域に最初にドライブレターが割り当てられることになります。この場合、先頭の領域は非アクティブな基本領域なので、論理領域の後にドライブレターが割り当てられます。

HDD
1 基本領域1
F 基本領域2
C
アクティブ 論理領域1
D 論理領域2
E

★例3------アクティブな領域が無い場合
アクティブな領域が無い場合は、先頭の基本領域がアクティブな領域と同じ扱いになります。

HDD
1 基本領域1
C
  基本領域2
F 論理領域1
D 論理領域2
E

★例4------1台のハードディスクに複数のアクティブな領域がある場合
FDISKコマンドの制限で述べたように、MS-DOSのFDISKでは一台の物理ドライブにはアクティブな領域は1つしか設定できませんが、Windows 2000のディスク管理やLinuxのfdisk、その他のパーティション設定ツールを使えば、一台に複数の基本領域をアクティブにできます。

この場合は、一番最初のアクティブな領域が再優先され、論理領域の後にその他のアクティブな基本領域が続いて、最後に非アクティブな基本領域、という順に割り当てられます。

HDD
1 基本領域1
G
  基本領域2
C
アクティブ 基本領域3
F
アクティブ 論理領域1
D 論理領域2
E

★例5------2台以上のハードディスクを接続した場合
2台以上のハードディスクが接続されている場合、全ドライブのアクティブな領域、または先頭の基本領域が再優先され、非アクティブな基本領域は全ドライブの論理領域の後にドライブレターが割り当てられます。

HDD
1 基本領域1
C
アクティブ 基本領域2
H 論理領域1
E 論理領域2
F
HDD
2 基本領域1
I 基本領域2
D
アクティブ 論理領域1
G


以上のことを、なるべく簡単にまとめると、次のような順序になるといえるでしょう。

(全物理ドライブの…)
先頭の基本領域(または最初のアクティブな基本領域)
論理領域
2番目以降のアクティブな基本領域
非アクティブな基本領域


【補足】


1台目2台目のハードディスクというのは、ハードディスクの認識順によるもの
先頭の基本領域といった場合、パーティションテーブルのエントリ順で最初の領域


--------------------------------------------------------------------------------

SYSコマンド FDISK /MBR コマンド は何をしているのか?
MS-DOS(Win9Xを含む)において、ハードディスクが起動しなくなったときの有効な処置として、FDISK /MBRコマンド と SYSコマンド のセットがあります。

 起動用フロッピーディスクから起動して、
 FDISK /MBR
 SYS C:

…とせよ、という有名なハードディスクの「復活の呪文」セットです。
これはどういう呪文なのでしょうか?
まず FDISK /MBR はFDISKコマンドの隠しオプションであり、FDISK /? としても、ヘルプにはそのようなオプションは表示されません。

これは、本来ならば未使用のハードディスクに対して初めてFDISKコマンドを使った時に、空の(有効なプログラムが無い)MBRにMS-DOS用の起動プログラム(ブートストラップローダー)を書きこむ動作を、単独で行うものです。

本来のFDISKコマンドの パーティションテーブルに値を書きこむ動作は含まれておらず、ブートコード領域だけをMS-DOS用のものにする特殊なオプションといえるでしょう。

それに対して SYSコマンドのほうは、各パーティションの先頭に位置するブートセクターに対してMS-DOS用のブートローダー(DOS-IPL)を書きこむものです。そのとき、ついでに(というかセットで)MS-DOS(Win9x)が起動に必要なファイル(IO.SYS COMMAND.COM 他)を対象パーティションのルートディレクトリに配置します。(同名のファイルがあればシステムファイルを上書きしてよいか確認の表示がされます)

ハードディスクが起動しない原因の多くは、MBRが有効でないか、ブートセクターが有効でないか、のどちらかですから、この2つの復活の呪文で修復できる場合が多いわけです。

FDISK /MBR と SYS C: の動作 MBR ブートストラップローダー
パーティションテーブル

←←← FDISK /MBR
※MS-DOS用ブートローダーを書き込む

ブートセクター

パーティション1 ←←← SYS C:
※MS-DOS用IPLを書き込む


以下は、2つのコマンドに関する蛇足です。

当然ながら、FDISK /MBR はハードディスクに対してのみ実行できるコマンドで、フロッピーディスクなど MBR を持たない構造の記憶装置には使用できません。

対して、SYS コマンドはブートセクターに対してMS-DOS起動用IPLを書き込むものですから、起動用FD を作成するときなど、フロッピーディスクにも使用できます。すなわち A:ドライブをフォーマット後にSYS A:とすれば、FORMAT A: /s と同様の効果です。(※ただし Windows Me では、書き込むシステムファイルがハードディスク用と起動用フロッピーディスク用で異なるため、FORMAT /s コマンドは封印されており、SYSコマンドもC:ドライブのブートセクター修復専用に限定されています。)

また、FDISK /MBRのほうは上記のような用途の他に、MBRを書きかえるタイプのプログラム(各種のブートセレクタなど)をアンインストールする場合にも用いられます。書きかえられた MBR に対して、元の(IBM標準の)MBRに戻すわけですから、結果的にアンインストールされたことになります。

ただし、Windows NT/2000 などのNTLDRによる起動メニューは、見た目は各種のブートセレクタと似ていますが、仕組み上 MBR を書きかえるものではなく、MS-DOS用のIBM標準ブートストラップローダを共用で使用するので、FDISK /MBR とやってもアンインストールできません。
よく、Windows9XがインストールされたPCにWindowsNT/2000をインストールしてマルチブートにした状態を元に戻すためには、NT/2000がインストールされたD:ドライブなどを削除して、FDISK /MBRとせよという間違った情報を見かけることがありますのが、この場合は SYS C: が正しいのです。(理由はNTLDR の仕組みを知るを参照)


使用解析ツール MBRSCAN V1.0

参考URL MBRSCAN OnlineManual
ブートとハードディスクのすべて

FDISK /MBR Rewrites the Master Boot Record
The information in this article applies to:
Microsoft MS-DOS operating system
Microsoft Windows 95
Microsoft Windows 98
Microsoft Windows Millennium Edition

This article was previously published under Q69013
SUMMARY
The MS-DOS Fdisk utility usually updates the master boot record (MBR) only if no master boot record exists. Repartitioning with Fdisk does not rewrite this information.

Fdisk has an undocumented parameter called /mbr that causes it to write the master boot record to the hard disk without altering the partition table information.

WARNING: Writing the master boot record to the hard disk in this manner can make certain hard disks partitioned with SpeedStor unusable. It can also cause problems for some dual-boot programs and disks with more than four partitions.
MORE INFORMATION
What is the MBR?
At the end of the ROM BIOS bootstrap routine, the BIOS reads and executes the first physical sector of the first floppy or hard disk on the system. This first sector of the hard disk is called the master boot record (or sometimes the partition table or master boot block). There is a small program at the beginning of this sector of the hard disk. The partition information, or partition table, is stored at the end of this sector. This program uses the partition information to determine which partition is bootable (usually the first primary DOS partition) and attempts to boot from it.

This program is written to the disk by the fdisk /mbr command and is usually called the master boot record. During typical operation, Fdisk writes this program to the disk only if there is no master boot record.

NOTE: The fdisk /mbr command only re-writes the MBR on the system drive (DISK-0) using BIOS calls. You cannot specify any other drive for the fdisk /mbr command to operate on other than DISK-0.
Why is the MBR Changed During Setup?
During the installation of Microsoft MS-DOS Upgrade, Setup replaces the master boot record on the hard disk with code to display a message similar to:
The MS-DOS 5.0 Setup was not completed.
Insert the UNINSTALL #1 diskette in drive A.
Press the ENTER key to continue.

This message should be erased and the master boot code rewritten before Setup is completed. If a problem occurs during Setup and you return to the previous version of MS-DOS, Uninstal should also remove this message. However, if Setup or Uninstal does not remove this message, or if the master boot record becomes corrupted, a new master boot record can be written to the disk using the following command:
fdisk /mbr

WARNINGS
Do not use this command if any of the following conditions exists:
The disk was partitioned using the Storage Dimensions SpeedStor utility with its /bootall option.
More than four partitions exist.
Certain dual-boot programs are in use.
The Storage Dimensions SpeedStor utility with the /bootall option redefines the drive's physical parameters (cylinder, head, and sector). The /bootall switch stores information about how the drive has been changed in an area of the master boot record that MS-DOS does not use. The fdisk /mbr command erases that information, making the disk unusable.

Some older original equipment manufacturer (OEM) versions of MS-DOS and some third-party partitioning utilities can create more than four partitions. Additional partition information is commonly stored information on partitions in an area that the fdisk /mbr command overwrites.

Some dual-boot programs have a special MBR that asks you at startup which operating system you want to use. The fdisk /mbr command erases this program. Dual-boot systems that boot whichever partition is marked Active are not affected by the fdisk /mbr command.

For more information about partitioning, query on the following word in the Microsoft Knowledge Base:
partitioning

The third-party products that are discussed in this article are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, regarding the performance or reliability of these products.

REFERENCES
More information on partitioning, disk organization, and the boot sequence can also be found in Chapters 3 and 8 of the DOS Programmer's Reference by Terry Dettmann, published by the QUE Corporation; Chapters 2 and 10 of Advanced MS-DOS Programming by Ray Duncan, and article 3 of The MS-DOS Encyclopedia, both published by Microsoft Press.

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル